package com.huwei.constant;

import java.util.HashMap;
import java.util.Map;

import com.huwei.util.BeanUtil;

/**
 * 用户请求返回结果工具
 * 
 * @author huwei
 *
 */
public class JsonResult {
	/**
	 * 固定字段
	 * 描述：表示该结果成功或失败
	 * 类型：boolean
	 * true 成功
	 * false 失败
	 */
	final static public String JSON_FIELD_STATUS = "status";
	/*
	 * 固定字段
	 * 描述：表示该结果提示信息
	 * 类型：string
	 */
	final static public String JSON_FIELD_MSG = "msg";
	/**
	 * 固定字段
	 * 描述：表示该结果错误信息
	 * 类型：string
	 */
	final static public String JSON_FIELD_ERROR = "error";
	/**
	 * 可变字段
	 * 描述：封装该次请求特有的返回结果；
	 * 类型：json对象
	 */
	final static public String JSON_FIELD_DATA = "data";
	
	static public String success() {
		return success(null);
	}
	
	static public String success(String msg) {
		return success(msg,null);
	}
	
	static public String success(String msg ,Object obj) {
		return success(msg, BeanUtil.toMap(obj));
	}
	
	static public String success(String msg ,Map<String ,Object> data) {
		Map<String ,Object> result = addField(true, msg, null);
		result.put("data", data);
		return BeanUtil.toJson(result);
	}
	
	static public String failed(String msg ) {
		return failed(msg ,null);
	}
	
	static public String failed(String msg ,String error) {
		return failed(msg ,error ,null);
	}
	
	static public String failed(String msg ,String error ,Object obj) {
		return failed(msg ,error ,BeanUtil.toMap(obj));
	}
	
	static public String failed(String msg ,String error ,Map<String ,Object> data) {
		Map<String ,Object> result = addField(false, msg, error);
		result.put("data", data);
		return BeanUtil.toJson(result);
	}
	
	private static Map<String ,Object> addField(boolean status ,String msg ,String error) {
		Map<String ,Object> map = new HashMap<String, Object>();
		map.put(JSON_FIELD_STATUS, status);
		map.put(JSON_FIELD_ERROR, error == null ? "" : error);
		map.put(JSON_FIELD_MSG, msg == null ? "" : msg);
		return map;
	}

}
